FIG. 1 illustrates a data processing system 10 having nodes 12a-12c coupled to a storage area network (SAN). The SAN includes a data storage system 20 and a SAN communication link 24. Data storage system 20 may include one or more distinct memory units, each of which may contain, for example, several magnetic or optical disks for storing data.
Nodes 12a-12c can read or write data to data storage system 20 via SAN communication link 24. Nodes 12a-12c also communicate with each other via local area network (LAN) communication link 26. Node 12a is a server computer system while nodes 12b and 12c are client computer systems to server node 12a. 
As shown in FIG. 1, server node 12a executes an operating system that includes a single node file system module (hereinafter referred to as single node file system) 30 and a file system driver filter module (hereinafter referred to as filter) 32a. Client nodes 12b and 12c also execute operating systems. The operating systems of client nodes 12b and 12c, however, do not include single node file systems. The operating systems executing on client nodes 12b and 12c include filters 32b and 32c, respectively. Filters 32a-32c can communicate with each other via LAN communication link 26.
Single node file systems create and manage files. Each file is typically created with an address space extending from zero to the size of the file. Single node file systems also allocate storage memory (e.g., storage memory within data storage system 20) to files. While the present invention should not be so limited, single node file systems typically allocate blocks of storage memory to corresponding blocks of file address space. If a storage memory block is allocated to a file address block, then each address in the storage memory block has a corresponding address in the file address block.
In addition to creating files, single node file systems create and manage meta data for each file. Meta data typically includes a file name assigned to the file, the file size, and a table or other similar structure that maps allocated storage memory to the file. Meta data, including memory-mapping tables, is originally created and stored in meta data memory 34a of server node 12a. Operating systems of client nodes 12b and 12c require meta data to access file data. Thus, valid meta data must be copied to meta data memories 34b and 34c before client nodes 12b and 12c can access data in files.
While it is common to say that computer systems write data to files at an address thereof, in reality data is written to and stored in storage memory allocated to the file address by the single node file system. Accordingly, when client node 12b writes data to a file address or file addresses, client node 12b actually writes data to a storage memory allocated to the file address or file addresses. Once storage memory has been allocated to a file address, the allocated storage memory can be used only for storing data designated for the file address unless the single node file system subsequently deallocates the storage memory. It is noted that even though storage memory is allocated, the allocated storage memory need not contain valid data. Moreover, storage memory blocks allocated to a file need not be contiguous or adjacent to each other in data storage system 20. For example, storage memory blocks allocated to a file may be distributed across several optical or magnetic disks of data storage system 20.
Any of nodes 12a-12c is capable of writing data to an address of a particular file in response to a request. However, data can be written to the address only if storage memory of storage system 20 has been allocated to the file address. Because client nodes 12b and 12c do not have single node file systems which can allocate storage memory, the performance of system 10 may degrade in situations where client nodes 12b or 12c receive a request to write data to file addresses which do not have storage memory allocated thereto. To illustrate, FIG. 2 shows operational aspects of client node 12b responding to a request to write data to an exemplary file E. At step 40, client node 12b receives the write request from an application program 36b executing on a computer system (not shown) in data communication with client node 12b. The request includes the data to be written and an address of file E where the data is to be written. From this address and the quantity of data to be written, client node 12b can calculate the address or addresses within file E where the data is to be written. For purposes of explanation, it will be presumed that the write request is an instruction to write data to consecutive addresses in file E. As will be described below, client node 12b can access the memory mapping table for file E to determine whether sufficient storage memory has been allocated for the write request.
After client node 12b receives the write data request, filter 32b first accesses meta data memory 34b to determine whether it includes a valid copy of meta data for file E as shown in step 44. As noted above, before client node 12b can access data in a file, client node 12b must have a valid copy of meta data for the file. If meta data memory 34b does not include a valid copy of the meta data for file E at the time client node 12b receives the write data request, then filter 32b generates a request for a valid copy. In step 46, this request is transmitted to filter 32a via LAN communication link 26.
Filter 32a accesses meta data memory 34a in response to server node 12a receiving the request from filter 32b. Presuming that meta data memory 34a contains valid file E meta data, filter 32a transmits valid file E meta data, including the valid memory mapping table, in a reply to client node 12b via LAN communication link 26, as shown in step 50. In step 52, client node 12b receives the reply from filter 32a, and in response filter 32b overwrites the invalid file E meta data in meta data memory 34b with the newly received valid copy.
With valid meta data for file E in memory 34b, client node 12b can determine whether sufficient storage memory in data storage system 20 has been allocated to complete the write request. More particularly, in step 54, filter 32b accesses the valid copy of memory-mapping table in memory 34b to determine whether storage memory has been allocated to all addresses where data is to be stored.
It is possible that sufficient storage memory has not been allocated to complete the write request. If not, storage memory must be newly allocated to each file E address where data is to be stored. Client node 12b, however, does not include a single node file system that can allocate storage memory. Thus, if filter 32b determines in step 54 that storage memory must be allocated before the write request can be performed, then client node 12b transmits the write request, including the data thereof, to server node 12a via LAN communication link 26.
Server node 12a processes the write data request received from client node 12b. In the process, single node file system 30 allocates the needed storage memory within data storage system 20 to file E. After the new storage memory has been allocated, single node file system 30 accesses file E meta data stored within memory 34a and updates the memory mapping table thereof with the new storage memory allocation. After the meta data for file E has been updated, server node 12a writes the data of the write request to allocated storage memory as shown in step 66.
As noted above, the performance of system 10 may degrade in situations where client nodes 12b or 12c receive requests to write data to file addresses which do not have storage memory previously allocated thereto. More particularly, a frequent transmission of write requests, including the data thereof, from client nodes 12b and/or 12c to server node 12a via LAN communication link 26 may substantially reduce the available bandwidth for transmitting data between the nodes via LAN communication link 26. Moreover, frequent processing of write requests received from client nodes 12b and 12c may substantially impede server node 12a's ability to process transactions received from, for example, application program 36a. 